#include<iostream>
using namespace std;
 // struct ;ListNode {
 //    int val;
 //    listnode *next;
 //    listnode() : val(0), next(nullptr) {}
 //     listnode(int x) : val(x), next(nullptr) {}
 //     listnode(int x, listnode *next) : val(x), next(next) {}
 //};
 //
class Solution {
public:

    ListNode* reverseList(ListNode* head) {
        if (head == nullptr || head->next == nullptr) return head;
        ListNode* Newhead = reverseList(head->next);
        head->next->next = head;
        head->next = nullptr;

        return Newhead;
    }
};